iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
自我挑戰組

ESP32 Micropython 從入門到實用系列 第 25

25.DC 變頻風扇馬達調速(下)

  • 分享至 

  • xImage
  •  

前面列舉了幾個馬達,無非要讓您瞭解,不同的馬達有不同的調速方式,而不是像PC散熱風扇一樣是固定模式的。

我們透過常用的調速模組,可以大略的估計這些風扇的調速方式:

  1. PWM 調速:頻率可定在 18K Hz,若能找到馬達的 datasheet ,則以其內容實現
    • 高電位啓動
    • 低電位啓動
    • 決定 duty 的範圍
  2. 電壓大小調速:可以用上面的做法,或者將頻率定在 100 Hz
    • 高電壓高轉速:同等於高電位啓動
    • 低電壓高轉速:同等於低電位啓動
    • 決定 duty 的範圍:取決於最高電壓與最低電壓
  3. 頻率大小調速
    • 低頻率高轉速:這點應該可以忽略,或許還沒有遇到這樣的馬達
    • 高頻率高轉速
    • 決定最高頻率與最低頻率
    • duty 固定在 50%

實作上也非常簡單,使用 Micropython 的 PWM 即可,調整的方法請您參閱第15天的內容:15.PWM (Pulse-width modulation) 模組,若是使用無源蜂鳴器,發出聲音也是可以使用 PWM 來調整發聲頻率,以 duty 來調整發聲大小,這些程式碼我就不再解釋了,我們在後天會再詳細的解說組裝好起來的完整風扇控制程式。

倒是 Timer 也可以控制頻率,我們以昨天第四個馬達爲例,按照廠家的說明,控制頻率在 50Hz ~ 500Hz 頻率越高,經由實驗 在 50Hz ~ 400Hz 之間可以穩定控制風扇,超過 400Hz 則轉速過高噪聲太大!!!

部分程式碼如下:

t0 = Timer(-1) # software timer

def toogle_speed(t):
    speed_ctl.value(not speed_ctl.value())

def change_speed(speed):
    global t0
    t0.init(freq=speed*2*50, mode=Timer.PERIODIC, callback=toogle_speed)

......
While True:
...
    if (fan_on == True):
        if (ir_code_new == SPD_UP): # increase speed
            speed += 1
            if (speed > 8): speed = 8
            change_speed(speed)
        elif (ir_code_new == SPD_DN): #decrease speed
            speed -= 1
            if (speed < 0): speed = 0
            change_speed(speed)
...
......


上一篇
24.DC 變頻風扇馬達調速(上)
下一篇
26.DC變頻風扇控制電路板
系列文
ESP32 Micropython 從入門到實用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言